AI技术在58同镇推荐场景的应用实践
导语
本文基于58同镇推荐场景,阐述了AI技术在赋能下沉市场方面所做的一些探索、应用和实践,希望对大家有所帮助和启发。
背景
AI(人工智能)是引领新一轮科技革命和产业变革的战略性技术,近年来,通过人工智能提高生产力以及创造全新的产品和服务,已经成为企业竞争和产业升级的迫切需求。互联网和AI技术的飞速发展已经深刻改变了人们的生产和生活方式,但是地域发展上也极不均衡,广大的四五线城市和乡村市场依然存在信息壁垒,对新技术的需求更加迫切,下沉市场所拥有的巨大潜力让互联网巨头纷纷展开布局。
58同镇是公司进军下沉市场最重要的战略性业务,在全国布有一万多个乡镇站点,覆盖31个省份,年服务超过1亿用户。同镇利用站长的私域流量和58本地版APP的公域流量,并依托下沉市场的信息传播和渗透优势,可以触达千万级的乡镇人群,致力于为下沉市场用户提供精准的本地化信息服务。那么如何更精准的刻画用户群,更高效的提升流量转化和用户体验,这一切都离不开AI技术的赋能。
场景概述
同镇智能推荐,采用Feed流展现和交互方式,面向下沉市场用户群,提供基于地域分发的多品类信息融合推荐。内容涵盖新闻资讯、招聘、房产、汽车和交友等品类信息。个性化推荐,连接了内容生产者和消费者,承载着58本地版APP引流、转化和体验落地的价值使命,对用户持续增长、高效转化和长期留存都有着非常重要的作用。
目前同镇推荐流量已经覆盖本地版app主要列表的推荐场景,主要包括首页feed、好工作、头条tab、好房子、交友、交友动态等(如图1)。本文重点聚焦首页Feed流推荐场景,从整体架构、数据、算法模型及演进过程为大家展开介绍。
图1:同镇主要推荐场景
整体架构
同镇推荐系统整体架构包括:基础数据层、数据计算层、算法策略层、逻辑层和应用层。基于业务、日志和标签等基础数据,综合应用机器学习、深度学习和NLP等技术为用户做召回和点击率预估,支持各品类信息topN推荐结果的融合再排序,目前支持首页feed、招聘、头条、房产、交友等列表的应用场景接入。(如图2)
图2:同镇智能推荐整体架构
同镇推荐系统整体架构采用松耦合的分层分模块设计方式,数仓和画像平台构筑了基础数据和标签的底层支撑,特征平台保证了各个模型所需特征的统一构建和维护,召回策略和算法模型层支持灵活组合和扩展,以满足不同推荐场景的需求,逻辑层支持可定制化的推荐规则及策略,整体框架支持ABTest系统的无缝集成和动态配置。
数据&特征
对一个推荐系统来说,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见数据和特征是重中之重,我们的数据主要包括业务数据、行为日志和画像标签数据。用户行为数据一般来源于埋点日志,可以分为显性反馈和隐性反馈两种,涉及曝光、点击、分享、收藏等基础埋点。原始数据经过清洗、样本采样、特征组合、特征变换和特征离散等特征工程的处理,最终形成训练样本并作为模型的input。
内容源和画像标签方面着重介绍如下:
1. 内容源
同镇推荐内容源包括新闻资讯和分类信息两大类,新闻资讯分为文本类、图文类和视频类,来源包括站长发布的本地资讯、合作渠道内容和抓取内容等。分类信息主要是58同城和同镇各分类业务的帖子数据:招聘、房产、车、二手物品、交友、部落等。(如图3)
图3:内容源组成结构
2. 内容标签
同镇推荐内容源包括新闻资讯和分类信息两类,分类信息中同城部分主要依赖各垂直业务定义的分类标签数据;同镇分类信息数据很多需要结合预定义和NLP技术来做文本标签的提取和处理,像同镇招聘帖中的职位、工作地点、薪资,房产帖中的户型、面积、位置、总价等,这些都是从站长发布的非结构化长文本中通过NLP和Bert模型提取出来的,其中,招聘职位标签基于Bert提取准确率已达到93%,地理位置、户型、面积等标签准确率都在80%左右。
新闻资讯是同镇feed流推荐的主要内容源,目前用到的文本特征主要有如下几类:
a) 语义特征
主要是新闻内容的一级和二级分类标签,基于预定义的分类体系和人工标注的十万量级的样本语料,通过文本处理和Bert模型来训练,并得到覆盖相对全面而又准确的分类效果。一级分类Cate1目前离线评测准确率为85%,二级分类Cate2正在基于新分类体系做语料标注,后面会基于Bert+DNN模型做训练和优化。
b) 隐语义特征
目前用到的隐语义特征主要有topic、关键词、实体词,其中实体词还处在探索阶段,计划采用Bert+BiLSTM+CRF的序列标注模型来进行命名实体的识别。
Topic标签:对topic标签的提取先后尝试过KMeans+TF-IDF的方式和LDA主题模型,效果还有些差距,目前正在基于Bert提取句子vector后通过KMeans聚类做训练和优化。
关键词:关键词提取目前采用的是基于深度学习的Attention弱监督算法模型,主要是通过训练文章分类或者回归点击,利用Attention对文章关键词进行权重计算,把权重高的,即对分类或回归影响最大的关键词进行抽取作为文章的候选关键词,再进行词性过滤等处理进而得到最终的关键词信息。
c) 时空特征
资讯内容的时效性、新鲜度、地域等是本地信息分发模型和策略的重要特征,尤其地域热点、全局热点召回以及算法模型召回等策略,作为强特征参与召回和排序计算,保证了同镇本地化特色的定位。
d) 质量特征
质量特征体现在两个方面,一是内容本身的质量优劣,二是内容信息的安全性。在整个推荐的召回和排序策略上,我们引入了低俗和低质模型来帮助解决内容信息本身的问题,低俗和低质模型的预测结果会参与recall和rank模型的训练及最终的推荐排序,从而保证提升转化效率的同时持续构建良好的内容生态。
低俗模型目前采用的是分类算法来处理,低俗样本主要包含涉政、涉黄,后续会扩充暴力、血腥及谩骂等类别。训练集是基于正负样本做的同时采样,基于Bert模型做分类预测,目前线下准确率约92%。
低质模型的判别上主要是引入了困惑度的概念,困惑度是一种评判概率模型或概率分布预测的衡量指标,可用于评价模型好坏,也是目前NLP方面用来衡量语言概率模型优劣的常用方法。主要是通过无监督的预训练模型,计算语句的困惑度,结合实际场景设定对应阈值来对低质内容做处理。在解决内容语法、语义层面的质量问题上,该方案适用面广、计算效率和准确率比较高。语句困惑度的训练我们采用的是Bert模型,目前准确率约90%。
困惑度计算公式如下:
其中,分母部分代表测试集总长度,M是指训练好的模型参数,p代表w出现的概率。
低质模型在语义语法判别基础上,后续会考虑增加标题党、广告等类型的识别,另外,会基于用户行为、效果转化、停留时长等维度数据构建低效模型来扩充内容侧特征。
3. 用户标签
用户画像标签主要包括用户基础属性和用户行为属性两方面,目前同镇用户画像平台共有150+个维度标签,画像标签在推荐上目前主要用于用户与内容匹配召回和用户兴趣建模。标签构建分为离线和实时计算两种方式,实时数据流处理主要基于Kafka、Spark Streaming和Flink等流式处理框架来实现。标签结构上包括原始数据、事实标签、模型标签和预测标签(如图4)。
结构化的画像标签是整个推荐系统和push推送系统个性化模型的基石,标签本身的准确度、覆盖度和实时性至关重要,随着业务发展,也一直在不断地扩充和完善。
图4:同镇用户画像标签结构
算法模型
1. 召回模型
内容召回也称粗排,是推荐系统的重要环节,召回策略分离线召回和实时召回,目前除CF、Attention、DeepFM等离线算法召回模型外,其他类型的召回策略基本都是实时计算的方式,以便能即时感知用户的行为偏好和反馈。
目前召回策略的类型主要包括:画像标签类召回、文本相似类召回、算法模型类召回、热点策略类召回和其他策略召回。
a) 画像标签召回
画像召回主要基于用户实时、短期、中期和长期的画像标签做内容匹配性召回,针对的是已有行为记录的用户群,通过对用户侧和内容侧标签向量做余弦相似度计算,并对最终的相似度打分做排序输出,标签本身的计算会考虑时间衰减等处理。画像召回是高效直接的体现个性化因素的常用方式,尤其实时画像召回能很好的捕捉用户的实时偏好,通过实时调整策略为用户展示更匹配的结果。
该召回的优点很明显:快速高效,可解释性好,不足之处就是严重依赖标签集的准确性,同时也存在越推越窄的问题,所以需要结合其他模型和处理方式来增加推荐的多样性。
b) 文本相似召回
文本相似召回,毋庸置疑是刻画匹配文本之间的相似度,以此来召回匹配度高的候选集。TF-IDF算法的优势在于简单,并且对文章的所有元素进行了综合考量,但也存在致命的不足,TF-IDF把文章的每个词看做独立的个体进行处理,忽略了词的意义和词之间的关联关系等因素,在这方面Word2Vec算法就做的很好,Word2Vec特点是将词向量化,词与词之间就可以定量度量之间的关系,用来挖掘词之间的联系。
目前实际使用上我们结合了两者优点,对两种模型召回结果做融合处理。召回流程上,我们拿用户最近点击的N个帖子id分别加载两个相似模型结果,融合处理后得到对应的topN作为召回集,并参与最终的Rank计算。
c) 算法模型召回
实际场景中,用户分布以及Item行为分布都是长尾的,在这样长尾的数据上进行预估就要求我们的模型具备稳定的泛化能力。
算法召回模型承担的角色很重要,目前我们主要用了ItemCF协同过滤和Attention、DeepFM深度学习算法的模型召回。并在应用过程中,结合具体场景和特征做了对应模型调参和优化:
对ItemCF算法的具体应用和优化上,我们首先利用NLP工具Wor2vec对用户行为进行训练,构造训练数据时用到用户点击行为数据和Word2vec CBOW模型,开启10个线程,window参数设置为5,sample参数设置为1e-5,这样做主要是为了对热门内容的惩罚,训练好Item的Embedding后再对用户点击的Item做聚类,聚类数目为10,然后再计算聚类中心和 Item Embedding 相似度较高的 topN item作为候选集。算法效果对比之前ALS算法,训练速度提升近4倍,召回策略的线上CTR提升约50%。
基于用户行为的多角度多层次Attention召回算法,主要是利用用户浏览和点击等行为,训练用户重点关注哪些关键词、哪些句子以及哪些类型的文章,这三层结构采用Attention进行权重打分,得到用户的点击喜好模型。其中的训练和调参过程,首先从用户行为数据里把浏览未点击的数据做为负样本,点击过的做为正样本,然后将正样本label设为1,负样本设为0,最后一层采取相似度计算并作为输出,最后采用回归模型进行拟合。效果方面,召回策略线上CTR 对比ALS算法相对提升70%,多样性提升了53%。
基于深度学习算法deepFM的召回模型,我们选取5天内有点击行为的用户作为召回对象,将用户特征、item特征作为deepFM模型input,得出每个item对于用户的预测score,每个用户选取分值topN的item作为召回候选集并存入redis供召回服务实时获取。相比FM算法召回模型,deepFM的线上AB测效果提升45%。
d) 热点召回策略
热点召回策略是新闻资讯类推荐最重要的召回策略之一,包括地域热点和全局热点召回,尤其地域热点召回是同镇本地化特色的切实体现。地域热点召回,顾名思义,主要依赖时间、地域、PV、CTR、CVR等维度数据综合打分后来召回,目前我们分为按天维度的三级地域召回(市、县、镇)和按小时维度的三级地域召回(市、县、镇)两大类,用以覆盖短期热点和实时热点新闻,热点池采取定时更新的选取和淘汰机制来保证热点数据的真实精准。
e) 其他召回策略
协同类特征及模型无法解决冷启动问题,针对没有任何行为记录的新用户群体,我们采用了Bandit算法的摇臂策略来实现概率预估,简而言之,就是采用初始策略为用户提供默认结果,然后通过用户的反馈数据动态调整策略,为下一刷提供最佳排序。在此基础上,后面又上线了升级版,即兴趣冷启动召回策略,主要是摇臂的输入由分类调整为特定分类+topic的组合,实现对用户实时兴趣更精准的捕捉。
f) 召回策略统计分析
为方便召回策略的对比分析和持续优化,我们对各策略的召回比例以及最终下发量做了日常分析和动态监控。由于内容源及上层模型的调整,召回策略也需要做对应比例和配置优化,以保证上下有机联动和效果稳定。(如图5)
图5:召回策略下发量统计及趋势分析
2. 排序模型
排序模型环节又称精排,同镇推荐系统排序模型从2019年4月初上线第一版至今,半年多时间里前后主要经历了四个阶段的迭代优化历程:(如图6)
图6:排序模型演进历程
第一阶段:规则策略排序
初期上线规则策略排序,一是为了快速上线,二是建立排序模型Baseline。规则策略主要是针对各召回策略按比例和既定数量输出的候选集,然后基于时间、地域、行为统计指标和转化数据等维度进行权重计算,并综合打分后输出排序结果。
第二阶段:树模型+线性模型组合
排序模型在算法选型时,结合业务场景和经验,我们直接采用了线性模型和非线性模型结合的方式,也属行业主流方案。主要是通过树模型进行特征组合,使模型具有非线性与对连续特征更好的处理能力。前期应用了GBDT+LR并对模型基于Baseline做了ABTest对比调优。后期采用XGBoost替换GBDT主要鉴于其在模型上做的改进和优化,不论是精度还是效率上都有了提升:
实际升级优化过程中,对XGBoost做了相应调参:主要通过交叉验证方式以auc为评价指标对模型学习率、叶子节点权重、树深度、样本及特征采样率、L1和L2正则化系数等Grid Search,寻求最优参数。
由于xgboost本身在gbdt上做的优化改进,具有更好的泛化性,xgb+lr相对gbdt+lr大约有6%提升,期间对特征工程做了一些扩充,加入了词向量、用户帖子来源偏好等统计特征。
第三阶段:深度学习排序模型
随着用户量增加,数据训练样本不断增多,在大量数据集下深度学习模型相对于传统机器学习模型更具优势。
DeepFM中fm+deep模型,能进行二阶特征组合与高阶特征组合,相比xgb+lr能更好从原始特征中学习特征之间隐藏的关联性,由于deepfm中特征交叉发生在bit级,而实际特征中有很多多值离散特征,因此引入xdeepfm使特征交叉发生在特征向量级并且加入了lr层,模型具有更好的特征组合能力和稳定性。
图7:DeepFM模型结构
图8:XDeepFM模型结构
xdeepFM输出函数如下:
其中,分别是DNN和CIN的输出。XDeepFM不仅能同时以显式和隐式的方式自动学习高阶的特征交互,使特征交互发生在向量级, 更容易处理多值离散特征,而且加入了线性模块,依旧可以接入很多根据先验知识提取的交叉特征来提高模型记忆能力。我们线上最终采用xdeepfm后,效果相对 xgb+lr 在人均点击和ctr上均有7%左右提升。
第四阶段:XGB+LR & XDeepFM融合排序
由于XGB+LR和XdeepFM两种模型对特征组合学习具有不同的方式,且在实际表现中XGB、LR更倾向于热点召回数据,而XdeepFM更倾向于算法模型召回数据,两者结合后表现更为均衡稳定。XGB+LR&XdeepFM相对XdeepFM平均约有5%提升。
表1:算法排序模型优化改进及效果对比
3. 融合控制模型
融合控制模型也称重排,主要负责流量均衡和多样性控制,运营及商业策略控制等。同镇首页Feed流推荐场景与其他业务的推荐有所不同,其涵盖的内容包括新闻资讯和各分类信息,那么如何将不同品类的内容通过模型统一排序?
由于不同品类帖子所具有的数据特征差异很大,很难用模型统一训练,所以我们对新闻资讯、招聘、房产等主要品类分别采用模型训练、排序输出,其他品类采用规则策略计算排序,最终各个品类的排序结果再通过融合模型统一排序。融合模型的处理主要基于地域用户群品类偏好统计模型、决策树品类预测模型、流量均衡控制因子等做加权计算处理,品类Rank模型打分归一化处理后与融合控制模型打分再做统一计算,从而得到最终的推荐排序。
ABTest及效果评估
为保证线上推荐效果客观、公正和准确的得到评估,也为了满足推荐各模块长期迭代优化的诉求,我们搭建了ABTest实验平台,支持线上召回层、排序层、融合控制层和展示层的流量正交切分实验,支持按照UV或PV方式分流,针对实际场景可以灵活配置不同的实验组和实验层,支持层级的无限扩展,并支持策略的实时动态调整。
同镇推荐系统所有模型和策略的迭代优化都要经过离线实验和线上ABTest评估,上线以来,召回模型、排序模型、融合控制模型和服务层分别经过几个阶段的评估和优化,目前线上主要效果指标CTR(点击率)对比4月初相对提升率约175%。整体CTR效果趋势图如下:
图9:feed推荐ctr效果趋势
总结与规划
推荐系统的本质就是匹配用户的兴趣和内容的特征,因此标签构建和特征挖掘非常重要,需要贯穿推荐优化工作的始末。同镇feed推荐区别于其他垂类业务的推荐场景,内容品类复杂,特征杂且多非结构化形式,推荐系统既要提升转化效率,又要突出本地化特色,更要维护内容生态,因此需要平衡各个目标,面临的挑战是多方面的。
经过一段时间的摸索与实践,同镇千人千面推荐系统取得了一定的成果与积累。接下来,我们将继续在特征、模型和工程等方面做迭代优化。
继续沉淀、打磨现有推荐策略和模型,在目标优化的道路上,没有最好,只有更好;
更深度挖掘用户意图,刻画上下文场景,扩充更多维度标签和特征;
探索新的网络结构,增加图像识别模型,增加新的深度学习、强化学习算法模型;
增加多目标优化模型,以充分结合的业务目标和算法目标为导向;
扩充用户画像平台,逐步构建同镇知识图谱。
参考文献
1.https://arxiv.org/pdf/1803.05170.pdf
2.https://blog.csdn.net/yfreedomliTHU/article/details/91386734
作者简介
闫文昌,58算法架构师/技术委员会委员。
点击图片即可报名抢座
END
阅读推荐
3. 开源|LPA-Detector:基于GraphX 的LPA算法改进
4. 开源|Zucker:Android APP模块化大小自动分析统计工具
5.开源|WBBlades:基于Mach-O文件解析的APP分析工具